gusucode.com > LTE基带收发仿真系统matlab源码程序 > LTE baseband simulation/channel_est_real.m
function HfreqCell = channel_est_real(Hcell,h,iUE) % 功能:理想信道,计算用户所在子带上的频域信道 % 如果使用频域信道,则Hcell有效,h不可用 % 如果使用时域信道,则h有效,Hcell不可用 % 输入: % Hcell:频域信道矩阵 % h:时域信道响应 % iUE:第i个用户 % 输出: % HfreqCell: 第i个用户的频域信道矩阵 % % Author: 程式小组(徐萌 张妙 张晓庆) % Date: 2010-07-11 % ========================================================== global LTE_par nTx = LTE_par.BS_par.nAnt; % BS 天线数 nRx = LTE_par.UE_par.nAnt; % UE 天线数 nRB = LTE_par.UE_par.nRB(iUE); scPerRB = LTE_par.scPerRB; RB_DL = LTE_par.RB_DL; % 下行可用资源块 FFT_SIZE = LTE_par.FFT_SIZE; startCarr = LTE_par.schedule.startCarr(iUE);% 起始子载波位置 channelFreq = LTE_par.channelFreq; % 添加频域信道指示 true:频域信道 false:时域信道 % =========以下参数测试用===================== % nTx = 1; % nRB = 5; % FFT_SIZE = 2048; % scPerRB = 12; % startCarr = 0;% 起始子载波位置 % ========================================== % 发送的复值符号可用子载波位置 % availableCarr = [FFT_SIZE-RB_DL*scPerRB/2+1:FFT_SIZE 2:RB_DL*scPerRB/2+1]; % 信道估计得到的频域载波在此处没有显式频谱搬移,其过程包含在availableCarr中 availableCarr = [FFT_SIZE/2-RB_DL*scPerRB/2+1:FFT_SIZE/2,FFT_SIZE/2+2:FFT_SIZE/2+2+RB_DL*scPerRB/2-1]; nSubCarr = nRB*scPerRB; % 第iUE个用户占用的子载波数 HfreqCell = cell(nSubCarr,1);% 用户iUE占用载波位置 if channelFreq == true % 如果添加的是频域信道,则取出用户所在的子带的信道 for occupyCarr = startCarr+1:nSubCarr+startCarr; HfreqCell{occupyCarr-startCarr} = Hcell{availableCarr(occupyCarr)}; end else % 如果添加的是时域信道,则对时域信道进行频域转换,并取出用户所在子带的信道 Hfreq = zeros(nRx,nTx,FFT_SIZE); for iRx = 1:nRx for iTx = 1:nTx Hfreq(iRx,iTx,:) = fft(h(iRx,iTx,:),FFT_SIZE); end end for occupyCarr = startCarr+1:nSubCarr+startCarr; HfreqCell{occupyCarr-startCarr} = Hfreq(:,:,availableCarr(occupyCarr)); end end